package com.chukun.gateway.core.parallel;

/**
 * @author chukun
 * @version 1.0.0
 * @description 多生产者多消费者处理接口，并发队列
 * @createTime 2023/12/23 20:00
 */
public interface ParallelHandlerQueue<E> {

    /**
     * 添加元素,添加失败抛异常
     * @param event 要添加的元素
     */
    void add(E event);

    /**
     * 添加多个元素，添加失败抛异常
     * @param events 要添加的元素
     */
    void add(E... events);

    /**
     * 添加元素, 返回添加是否成功
     * @param event 要添加的元素
     * @return 是否添加成功
     */
    boolean tryAdd(E event);

    /**
     * 添加多个元素, 返回添加是否成功
     * @param events 要添加的元素
     * @return 是否添加成功
     */
    boolean tryAdd(E... events);

    /**
     * 启动
     */
    void start();

    /**
     * 销毁
     */
    void shutDown();
    /**
     * 判断是否已经销毁
     */
    boolean isShutDown();
}
